<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
<script>
    // 你是怎么理解promise的使用场景是什么
        /**
         * promise是用于解决地狱回调问题，他有三中状态padding进行中、fulfilled成功、rejected失败，状态一旦改变就不会在变
         * promise有两个参数resolve成功回调reject失败回调
         * promise创建的实例有几种方法分别是：
         * then 成功回调 then是通过resolve返回的是一个新的promise实例
         * catch 失败回调 catch是通过reject返回一个错误信息 它具有冒泡性质会一直向后传递直到被捕获为止
         * finally 无论promise状态如何都会回调  
         * 使用场景：我们在使用promise封装ajax
        */
    //    function fun (url){
    //     return new Promise((resolve, reject) => {
    //         let xhr=XMLHttpRequest()
    //         xhr.open(GET,url,true) //第一个参数是请求方式 第二个参数时请求地址  true是开启异步请求false就是不开启异步请求
    //         xhr.onreadystatechange=function(){
    //             if(xhr.readyState==4){  //响应已完成；您可以获取并使用服务器的响应了。
    //                 if(xhr.status==200){
    //                         resolve()
    //                 }else{
    //                     reject()
    //                 }
    //             }
    //         }
    //         xhr.send()
    //     })
    //    }
    //    fun('http//www.baidu.com').then(res=>{}).catch(err=>{})


    //var let const 之间的区别
        /**
         * var 声明的是全局变量 有变量提升 在声明之前调用值为undefined 不存在暂时性死区问题 var能对一个变量多次声明 
         *    在函数内声明的变量是局部的在函数外声明的是全局的 
         * let 用法类似于var 不存在变量提升 在声明之前调用会报错 存在暂时性死区问题 
         *    使用let声明变量前该变量都不可用 let不可以一个变量声明多次 
         * const 声明的是一个常量 常量的值不可以改变  var和let可以修改
         *  var 不存在块级作用域 let const存在块级作用域
         * 
         * 
        */
    //javascript中有几种绑定事件的方式，具体如何实现
        /**
         * 三种 一种是行内绑定 
         * 第二种是获取dom元素赋值给变量变量绑定事件 
         * 第三种是获取dom元素赋值给变量 变量.addEventListener添加事件removeEventListener删除事件(事件，绑定的事件函数，true(捕获值)flase(不捕获值))
         *                             
        */
    //jquery有哪些选择器和常用的查找方法
        /**
         *  $( "ul li:nth-child(2)" ),$( "ul li:nth-child(odd)" ),$( "ul li:nth-child(3n + 1)" )
            $( "div span:first-child" )          返回所有的div元素的第一个子节点
            $( "div span:last-child" )           返回所有的div元素的最后一个节点
            $( "ul li:nth-child(odd)" )          返回指定的节点
        */
    //判断js数据类型的方法有哪些
        /**
         * js数据类型分为两大类分别是引用数据类型和基本数据类型
         * 基本数据类型存储在栈中 复杂数据类型存放在堆中
         * typeof是一个操作符 右侧跟的是一个一元表达式并返回这个表达式的数据类型
         * 
        */
</script>